1
Более чем простой поиск: преодоление ограничений семантической схожести
AI010Lesson 8
00:00

Более чем схожесть

Возникает проблема "проблема 80%"возникает, когда базовый семантический поиск работает для простых запросов, но не справляется с крайними случаями. При поиске исключительно по степени схожести векторное хранилище часто возвращает наиболее численно близкие фрагменты. Однако если эти фрагменты почти идентичны, то модель языкового описания (LLM) получает дублирующую информацию, что приводит к потере ограниченного окна контекста и упущению более широких перспектив.

Продвинутые принципы извлечения

  1. Максимальная маргинальная релевантность (MMR):Вместо того чтобы просто выбирать самые похожие элементы, ММР балансирует релевантность и разнообразие, чтобы избежать дублирования.
    $$MMR = \text{argmax}_{d \in R \setminus S} [\lambda \cdot \text{sim}(d, q) - (1 - \lambda) \cdot \max_{s \in S} \text{sim}(d, s)]$$
  2. Самопроизвольный запрос:Использует модель языкового описания (LLM), чтобы преобразовать естественный язык в структурированные фильтры метаданных (например, фильтрацию по «Лекция 3» или «Источник: PDF»).
  3. Контекстная компрессия:Сжимает извлечённые документы, чтобы выделить только «высокоценные» фрагменты, релевантные запросу, экономя токены.
Ловушка избыточности
Предоставление модели языкового описания (LLM) трёх версий одного и того же абзаца не делает её умнее — это лишь увеличивает стоимость запроса. Разнообразие является ключом к «высокоценному» контексту.
retrieval_advanced.py
TERMINALbash — 80x24
> Ready. Click "Run" to execute.
>
Knowledge Check
You want your system to answer "What did the instructor say about probability in the third lecture?" specifically. Which tool allows the LLM to automatically apply a filter for { "source": "lecture3.pdf" }?
ConversationBufferMemory
Self-Querying Retriever
Contextual Compression
MapReduce Chain
Challenge: The Token Limit Dilemma
Apply advanced retrieval strategies to solve a real-world constraint.
You are building a RAG system for a legal firm. The documents retrieved are 50 pages long, but only 2 sentences per page are actually relevant to the user's specific query. The standard "Stuff" chain is throwing an OutOfTokens error because the context window is overflowing with irrelevant text.
Step 1
Identify the core problem and select the appropriate advanced retrieval tool to solve it without losing specific nuances.
Problem: The context window limit is being exceeded by "low-nutrient" text surrounding the relevant facts.

Tool Selection:ContextualCompressionRetriever
Step 2
What specific component must you use in conjunction with this retriever to "squeeze" the documents?
Solution: Use an LLMChainExtractor as the base for your compressor. This will process the retrieved documents and extract only the snippets relevant to the query, passing a much smaller, highly concentrated context to the final prompt.